How to Replace null with - using single line in jQuery
For Example
var obj={
"Key1":null,
"key2":"I have null",
"key3":null
}
Expected Output:
var obj={
"Key1":"-",
"key2":"I have null",
"key3":"-"
}
You could use Object.keys and check the value. with a recursive function with a closure over the iterating object.
var iter = o => k => o[k] && typeof o[k] === 'object' && Object.keys(o[k]).forEach(iter(o[k])) || o[k] === null && (o[k] = '-'),
object = { Key1: null, key2: "I have null", key3: { kje: "test", dfasfd: null, demo: "null demo" } };
Object.keys(object).forEach(iter(object));
console.log(object);
which basically resolves with ES5 in
var object = { Key1: null, key2: "I have null", key3: { kje: "test", dfasfd: null, demo: "null demo" } };
Object.keys(object).forEach(function iter(o) {
return function (k) {
if (o[k] && typeof o[k] === 'object') {
Object.keys(o[k]).forEach(iter(o[k]));
return;
}
o[k] === null && (o[k] = '-');
};
}(object));
console.log(object);
This one-line function will work:
function nullToDash(obj){for(e in obj){if(obj.hasOwnProperty(e) && obj[e]===null){obj[e]="-";}}}
Edit: Unminified above function for better understanding
function nullToDash(obj){
for(e in obj){
if(obj.hasOwnProperty(e) && obj[e]===null){
obj[e]="-";
}
}
}
In one line, It would look something like
JSON.parse(JSON.stringify(obj).split(":null").join((':\"-"')));
var obj = {
"Key1": null,
"key2": "I have null",
"key3": null
}
var obj1=JSON.parse(JSON.stringify(obj).split(":null").join((':\"-"')));
console.log(obj1)
To make the code generic
$.each( obj, function( key, value ) {
if (value == null)
value = "-";
});